package utils;

import java.util.Properties;

import javax.mail.Authenticator;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.PasswordAuthentication;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;

public class MailUtils {

	private Session session;
	private String destinatario;

	public MailUtils(String destinatario) {
		this.destinatario = destinatario;
		if (session == null) {
			session = Session.getInstance(getPropriedades(),
					getAuthenticator());
		}
	}

	public void sendMailNota(Boolean novaNota) {	
		String texto;
		
		if (novaNota) {
			texto = "Olá, sua nota ja foi lançada em nosso sistema!\nPara verificar acesse: http://localhost:8080/cursoWeb";
		}else {
			texto = "Olá, sua nota foi alterada em nosso sistema!\nPara verificar acesse: http://localhost:8080/cursoWeb";
		}
		
		sendMail(texto);
		
	}

	private void sendMail(String texto){
		try {
			Message message = new MimeMessage(session);
			message.setFrom(new InternetAddress("javatar.system@gmail.com")); // Seta o remetente
			message.setRecipients(Message.RecipientType.TO,
					InternetAddress.parse(destinatario)); // Define o
															// destinat�rio
			message.setSubject("Nota do Curso"); // Define o assunto
			message.setText(texto); // Mensagem do email

			Transport.send(message); // Envia o email
		} catch (MessagingException e) {
			e.printStackTrace();
		}
	}
	
	public Authenticator getAuthenticator() {
		Authenticator autenticacao = new Authenticator() {
			public PasswordAuthentication getPasswordAuthentication() {
				return new PasswordAuthentication("javatar.system@gmail.com",
						"ap3javatar");
			}
		};
		return autenticacao;
	}

	public static Properties getPropriedades() {
		Properties props = new Properties();
		props.put("mail.smtp.host", "smtp.gmail.com"); // SMTP do seu servidor
														// de email
		props.put("mail.smtp.socketFactory.port", "465"); // Porta do servidor
															// smtp
		props.put("mail.smtp.socketFactory.class",
				"javax.net.ssl.SSLSocketFactory"); // Define a conex�o do tipo
													// SSL
		props.put("mail.smtp.auth", "true"); // Define que � necess�rio
												// autentica��o
		props.put("mail.smtp.port", "465"); // Porta do seu servidor smtp
		return props;
	}

}
